Telegram Group & Telegram Channel
📌 Оптимизация работы со строками в C++: std::string_view vs std::string

Привет, друзья! Сегодня хочу обсудить одну из самых частых проблем в C++ – работу со строками. А именно, почему std::string_view – это мощный инструмент, который может значительно ускорить ваш код.

Проблема: Копирование строк
Допустим, у вас есть функция, которая принимает строку:


void process(std::string s) {
// работа со строкой
}

Каждый раз, когда вызывается эта функция, создаётся новая копия строки. Если строка длинная, это дорого по времени и памяти.

Решение: Используем std::string_view
С std::string_view можно избежать лишнего копирования:


void process(std::string_view s) {
// работа со строкой без копирования
}

Теперь s – это просто представление строки, а не её копия. Вы можете передавать как std::string, так и char*, что делает API более гибким.

🚀 Преимущества std::string_view:
Не создает копий – работает быстрее.
Поддерживает стандартные операции (substr, find и т. д.).
Работает с std::string, char*, массивами символов.
Идеально подходит для парсинга и работы с текстом.

🔥 Важно помнить:
- std::string_view не управляет памятью, так что будьте осторожны с временными строками.
- Если строка-источник уничтожена, std::string_view станет невалидным.

Пример неверного использования:

std::string_view bad() {
std::string s = "Hello";
return s; // UB, строка уничтожена!
}


➡️ @cpp_geek



tg-me.com/cpp_geek/287
Create:
Last Update:

📌 Оптимизация работы со строками в C++: std::string_view vs std::string

Привет, друзья! Сегодня хочу обсудить одну из самых частых проблем в C++ – работу со строками. А именно, почему std::string_view – это мощный инструмент, который может значительно ускорить ваш код.

Проблема: Копирование строк
Допустим, у вас есть функция, которая принимает строку:


void process(std::string s) {
// работа со строкой
}

Каждый раз, когда вызывается эта функция, создаётся новая копия строки. Если строка длинная, это дорого по времени и памяти.

Решение: Используем std::string_view
С std::string_view можно избежать лишнего копирования:


void process(std::string_view s) {
// работа со строкой без копирования
}

Теперь s – это просто представление строки, а не её копия. Вы можете передавать как std::string, так и char*, что делает API более гибким.

🚀 Преимущества std::string_view:
Не создает копий – работает быстрее.
Поддерживает стандартные операции (substr, find и т. д.).
Работает с std::string, char*, массивами символов.
Идеально подходит для парсинга и работы с текстом.

🔥 Важно помнить:
- std::string_view не управляет памятью, так что будьте осторожны с временными строками.
- Если строка-источник уничтожена, std::string_view станет невалидным.

Пример неверного использования:

std::string_view bad() {
std::string s = "Hello";
return s; // UB, строка уничтожена!
}


➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/287

View MORE
Open in Telegram


C geek Telegram | DID YOU KNOW?

Date: |

How to Invest in Bitcoin?

Like a stock, you can buy and hold Bitcoin as an investment. You can even now do so in special retirement accounts called Bitcoin IRAs. No matter where you choose to hold your Bitcoin, people’s philosophies on how to invest it vary: Some buy and hold long term, some buy and aim to sell after a price rally, and others bet on its price decreasing. Bitcoin’s price over time has experienced big price swings, going as low as $5,165 and as high as $28,990 in 2020 alone. “I think in some places, people might be using Bitcoin to pay for things, but the truth is that it’s an asset that looks like it’s going to be increasing in value relatively quickly for some time,” Marquez says. “So why would you sell something that’s going to be worth so much more next year than it is today? The majority of people that hold it are long-term investors.”

The STAR Market, as is implied by the name, is heavily geared toward smaller innovative tech companies, in particular those engaged in strategically important fields, such as biopharmaceuticals, 5G technology, semiconductors, and new energy. The STAR Market currently has 340 listed securities. The STAR Market is seen as important for China’s high-tech and emerging industries, providing a space for smaller companies to raise capital in China. This is especially significant for technology companies that may be viewed with suspicion on overseas stock exchanges.

C geek from cn


Telegram C++ geek
FROM USA